#ifndef __PARTICLE_CONST_H__
#define __PARTICLE_CONST_H__

#include "Eigen/Dense"

#define SHOW_DEBUG false

#define PROGRAM_USE_CPU_PIXELBUFFER false

#define FILE_OPENCL			"demo.cl"

#define DMAX	(40)	//dM - 40mm
#define Dmax	(10)	//dm - 10mm
#define LAMDA	(20)
#define LAMDA_K	(10)

//Chia 64 particles thanh 8 groups de ve cho vua man hinh
//Voi size to 2048x2048 hay 4096x4096 can su dung ki thuat off-screen render
#define SIZE_IMAGE_PARTICLE_WIDTH		256
#define SIZE_IMAGE_PARTICLE_HEIGHT		256
#define NUM_TOTAL_PARTICLES				64


#define OFFSET_WRIST	0	//+3 wirst_Rotation
#define OFFSET_THUMB	3	//+4 thumb_ROTATION
#define OFFSET_FINGER1	7
#define OFFSET_FINGER2	11
#define OFFSET_FINGER3	15
#define OFFSET_LITTLE	19
#define NUM_DOF			23

#define vPOS_WRIST		0
#define vPOS_THUMB		3
#define vPOS_FINGER1	7
#define vPOS_FINGER2	10
#define vPOS_FINGER3	13
#define vPOS_LITTLE		16
#define vPOS_DOF		19

//struct Hypothesis 
//{
//	Eigen::Vector3f wirst_Position;
//	Eigen::Vector3f wirst_Rotation;
//
//	Eigen::Vector4f thumb_Rotation;
//	Eigen::Vector4f finger1_Rotation;
//	Eigen::Vector4f finger2_Rotation;
//	Eigen::Vector4f finger3_Rotation;
//	Eigen::Vector4f little_Rotation;
//};

struct HypothesisX
{
	double dofData[23];
};

#endif